package api.string;

/**
 *
 */
public class StringDemo {
    public static void main(String[] args) {
        String s1="123abc";//堆中创建了123abc字符量对象，并缓存到常量池中
        //编译器在编译时，若发现是两个字面量相连，则会直接连接好并将结果保持起来
        //如下语句会被编译为String s2="123abc";
        String s2="123"+"abc";
        System.out.println(s1==s2);

        String s3="123";
        //因为s3是一个变量，所以在编译期并不会直接编译好
        String  s4=s3+"abc";
        System.out.println(s1==s4);//false

        //在引用类型中==是判断地址是否相同，而不是内容
       String s=new String("hello");//创建了两个对象
       String s5="hello";//复用常量池中的字面量对象的地址
        System.out.println(s=s5);//false ,==是比较地址是否相同,是判断s和s5地址是否相同//
        //equals是判断内容是否相同
        System.out.println(s.equals(s5));//ture,判断两个字符串的内容是否相同
    }
}
